import { Component, OnInit } from '@angular/core';
import { HotlineService } from '../hotline.service';
import { DynamicDialogConfig, DynamicDialogRef } from 'primeng/primeng';
import { MdlDialogService } from '@angular-mdl/core';
import { MdlSnackbarService } from '@angular-mdl/core';
import { DateUtils } from '../../common/utils/DateUtils';
import * as cfg from '../../common/configuration';

@Component({
    templateUrl: './hotline-upload.component.html',
    styleUrls: ['./hotline-upload.component.scss'],
    providers: [HotlineService]
})
export class HotlineUploadComponent implements OnInit {
    zh = cfg.DATE_ZH_CN;
    //诉求三率
    cols0: any[] = [
        { field: 'yesswNum', header: '市长热线编号', style: { 'width': '150px', 'text-align': 'center', 'height': '45px', } },
        { field: 'dispatchTime', header: '派单时间', style: { 'width': '160px', 'text-align': 'center', 'height': '45px' } },
        { field: 'revisitType', header: '回访方式', style: { 'width': '100px', 'text-align': 'center', 'height': '45px' } },
        { field: 'unitName', header: '处置部门', style: { 'width': '100px', 'text-align': 'center', 'height': '45px' } },
        { field: 'recordSrcName', header: '问题来源', style: { 'width': '100px', 'text-align': 'center', 'height': '45px' } },
        { field: 'recordHandleProc', header: '办理经过', style: { 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'reporterName', header: '举报人', style: { 'width': '100px', 'text-align': 'center', 'height': '45px' } },
        { field: 'callNum', header: '来电号码', style: { 'width': '100px', 'text-align': 'center', 'height': '45px' } },
        { field: 'contactFlag', header: '回访组联系公众', style: { 'width': '120px', 'text-align': 'center', 'height': '45px' } },
        { field: 'answerFlag', header: '专业部门反馈', style: { 'width': '120px', 'text-align': 'center', 'height': '45px' } },
        { field: 'finishFlag', header: '问题解决', style: { 'width': '100px', 'text-align': 'center', 'height': '45px' } },
        { field: 'pleasedFlag', header: '问题处理满意', style: { 'width': '100px', 'text-align': 'center', 'height': '45px' } },
        { field: 'dispatchType', header: '市级12345派遣方式', style: { 'width': '150px', 'text-align': 'center', 'height': '45px' } },
        { field: 'recNum', header: '案件号', style: { 'width': '180px', 'text-align': 'center', 'height': '45px' } },
        { field: 'remark', header: '备注', style: { 'width': '100px', 'text-align': 'center', 'height': '45px' } },
        { field: 'errorMsg', header: '数据验证问题', style: { 'width': '250px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } }
    ];
    //街道承办
    cols1: any[] = [
        { field: 'yesswNum', header: '12345工单号', style: { 'width': '150px', 'text-align': 'center', 'height': '45px', } },
        { field: 'recordTypeName', header: '问题分类', style: { 'width': '150px', 'text-align': 'center', 'height': '45px', } },
        { field: 'reporterName', header: '来电人', style: { 'width': '150px', 'text-align': 'center', 'height': '45px', } },
        { field: 'recordDesc', header: '主要内容', style: { 'width': '150px', 'text-align': 'center', 'height': '45px', } },
        { field: 'address', header: '问题点位', style: { 'width': '150px', 'text-align': 'center', 'height': '45px', } },
        { field: 'callNum', header: '联系方式', style: { 'width': '150px', 'text-align': 'center', 'height': '45px', } },
        { field: 'dispatchType', header: '问题来源', style: { 'width': '150px', 'text-align': 'center', 'height': '45px', } },
        { field: 'unitName', header: '属地街道', style: { 'width': '150px', 'text-align': 'center', 'height': '45px', } },
        { field: 'errorMsg', header: '数据验证问题', style: { 'width': '250px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } }
    ];
    //部门承办
    cols2: any[] = [
        { field: 'yesswNum', header: '市长热线编号', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'reportTime', header: '上报时间', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'streetName', header: '街道', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'recordTypeName', header: '监管事项小类', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'reporterName', header: '举报人', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'recordDesc', header: '问题描述', style: { 'width': '250px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'address', header: '地址', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'callNum', header: '来电号码', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'unitName', header: '处置部门', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'recState', header: '问题状态', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'recNum', header: '案件号', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'streetSection', header: '分段街道', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'eventSrcName', header: '问题来源', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'taskNum', header: '任务号', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'districtName', header: '区域', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'handleEnd', header: '处置结束时间', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'handleDeadline', header: '处置截止时间', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'finishDate', header: '结案时间', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'handleDesc', header: '办理经过', style: { 'width': '250px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'superviseDomain', header: '监管领域', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'superviseCategory', header: '监管类别', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'superviseType', header: '监管事项大类', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'superviseSubType', header: '监管事项细I', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },

        { field: 'superviseSubType2', header: '监管事项细II', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'superviseSubType3', header: '监管事项细III', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'superviseSubType4', header: '监管事项细IV', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'community', header: '社区', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'gridName', header: '责任网格', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'handleHumanName', header: '经办人', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'currentActName', header: '当前阶段', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'contact', header: '联系方式', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'forceFinishType', header: '强制结案类型', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },

        { field: 'deleyTypeName', header: '延期类型', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'govStyleNum', header: '政风行风编号', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'sx96010Num', header: '首信96010编号', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'sx12345Num', header: '首信12345编号', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'wxNum', header: '微信系统编号', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'topicLayer', header: '专题图层区域', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'layerRegion', header: '图层区域', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'finishOpinion', header: '结案意见', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'issueLevel', header: '问题等级', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },

        { field: 'cityFinishTime', header: '市级截止时间', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'finishType', header: '结案类型', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'returnVisitFlag', header: '回访组联系公众', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'unitFeedback', header: '部门联系公众', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'pleasedFlag', header: '问题处理满意', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'sloveFlag', header: '问题解决', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'efficiencyEvaluate', header: '问题处置效率评价', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'timeUsed', header: '处置用时', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'feedbackTime', header: '回访时间', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },

        { field: 'finishFlag', header: '结案数', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'callbackHuman', header: '回访人员', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'callbackStatus', header: '回访状态', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'overdueFlag', header: '超时结案数', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'city12345Flag', header: '市级12345派遣方式', style: { 'width': '180px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } },
        { field: 'errorMsg', header: '数据验证问题', style: { 'width': '300px', 'text-align': 'center', 'height': '45px', 'white-space': 'nowrap', 'overflow': 'hidden' } }
    ];

    // 栏目
    cols: any[] = [];
    //数据解析栏目
    items: any[] = [];
    //加载按钮
    loading = false;
    //导入批次日期
    date: any;
    //按钮是否可用
    disabled = false;
    //回访类别
    reVisitType = 2;
    revistiLabel = ' 数据导入';

    timeRangeLabel = '回访时段';
    //类型
    type: number = 0;
    //解析成功数据
    successList: any[] = [];
    importSuccess: boolean = false;
    //解析失败数据
    failList: any[] = [];
    //数据解析Message
    message: string = "";
    constructor(
        private ref: DynamicDialogRef,
        private config: DynamicDialogConfig,
        private mdlDialogService: MdlDialogService,
        private hotlineService: HotlineService) {
        this.type = this.config.data.index;
        this.cols = [this.cols0, this.cols1, this.cols2][this.type];
    }

    ngOnInit() {
        if(1 == this.type){
            this.timeRangeLabel = '街道接收时间';
        }else if(2 == this.type){
            this.timeRangeLabel = '部门接收时间';
        }
        this.reVisitTypeChange();
        //区级回访（默认时间段为昨天12点到今天12点）
        if (2 == this.reVisitType) {
            this.date = [];
            let perDay = new Date();
            perDay.setDate(perDay.getDate() - 1);
            perDay.setHours(12);
            perDay.setMinutes(0);
            perDay.setSeconds(0);
            this.date.push(perDay);
            let today = new Date();
            today.setHours(12);
            today.setMinutes(0);
            today.setSeconds(0);
            this.date.push(today);
        }
    }

    /**文件解析 */
    onFileUpload(event, file) {
        this.message = "";
        if (!this.date || this.date.length != 2) {
            this.mdlDialogService.alert('请选择' + this.timeRangeLabel);
            file.clear();
            return;
        }
        this.loading = true;
        const formData: FormData = new FormData();
        formData.append('file', event.files[0], event.files[0].name);
        formData.append('start', DateUtils.dateToFormat(this.date[0], 'yyyy-MM-dd HH:mm') || '');
        formData.append('end', DateUtils.dateToFormat(this.date[1], 'yyyy-MM-dd HH:mm') || '');
        formData.append('type', this.type + "");
        formData.append('reVisitType', this.reVisitType + "");
        this.hotlineService.analysisFile(formData).subscribe(items => {
            this.successList = items.success;
            this.failList = items.fail;
            this.items = this.successList.concat(this.failList);
            this.message = "数据解析完毕，有效数据：" + this.successList.length + "条，无效数据：" + this.failList.length + "条";
            this.loading = false;
            file.clear();
        })
    }
    /**回访类型 */
    reVisitTypeChange() {
        if (this.type == 0) {
            if (this.reVisitType == 1) {
                this.revistiLabel = ' 加载市级回访';
                this.timeRangeLabel = '派单时间';
                this.cols = this.cols0;
            } else {
                this.revistiLabel = ' 加载区级回访';
                this.timeRangeLabel = '回访时间';
                this.cols = this.cols2;
            }
        }
    }
    /**数据入库 */
    importData() {
        if (!this.date || this.date.length != 2) {
            this.mdlDialogService.alert('请选择' + this.timeRangeLabel);
            return;
        }
        this.disabled = true;
        let params = {
            'start': DateUtils.dateToFormat(this.date[0], 'yyyy-MM-dd HH:mm'),
            'end': DateUtils.dateToFormat(this.date[0], 'yyyy-MM-dd HH:mm'),
            'type': this.type,
            'reVisitType': this.reVisitType
        };
        if (0 == this.type) {
            //诉求三率
            if (this.reVisitType == 2) {
                params['unitRecords'] = this.successList;
            } else {
                params['revisitRecords'] = this.successList;
            }
        } else if (1 == this.type) {
            //街道承办
            params['streetRecords'] = this.successList;
        } else if (2 == this.type) {
            //部门承办
            params['unitRecords'] = this.successList;
        }
        if(!this.importSuccess){
            this.hotlineService.importData(params).subscribe(items => {
                this.disabled = false;
                this.mdlDialogService.alert('数据导入成功！', '确定');
                this.importSuccess = true;
            })
        }else{
            this.mdlDialogService.alert('数据已经成功导入，请勿重复导入', '确定');
        }
    }

    /**错误数据导出 */
    exportErrorData() {
        if (this.failList.length) {
            let params = { 'type': this.type };
            if (0 == this.type) {
                //诉求三率
                if (1 == this.reVisitType) {
                    //市级回访
                    params['revisitRecords'] = this.failList;
                } else if (2 == this.reVisitType) {
                    //区级回访
                    params['unitRecords'] = this.failList;
                }
            } else if (1 == this.type) {
                //街道承办
                params['streetRecords'] = this.failList;
            } else if (2 == this.type) {
                //部门承办
                params['unitRecords'] = this.failList;
            }
            this.hotlineService.exportErrorData(params).subscribe();
        }
    }
}